#!/bin/bash
#####################
# Auteur :[Leo_01] alexismichon@free.fr
# Date : 2007/09/22
# Licence : GPL V3
# Version : 0.2 TCP-SSL
# Description : Hook permettant d'envoyer les messages de commit au module svn-commits
#####################

# Il faut obligatoirement deux arguments au script
if [ $# -lt 2 ]; then
        echo "Usage: ./post-commit Repos Rev"
        exit
fi

# Arguments passes au script
REPOS="$1"
REV="$2"
# Nom du depot
NAME_DEPOT="depotname"
# Emplacement des logiciels
SVNLOOK=/usr/bin/svnlook
SOCAT=/usr/bin/socat
# SSL
CRTFILE=/var/.../client.crt
KEYFILE=/var/.../client.key
CAFILE=/var/.../CA.crt
METHOD=SSLv2 
# Adresse ou le module est en ecoute
HOST="localhost"
# Port de connexion
PORT=3333
TMPFILE=`mktemp`

################################
# En dessous de cette ligne il n'y a aucun variable
# Ne modifier la suite qu'apres avoir reflechit  !!!!
#
################################

# Message de commit
MSG=`$SVNLOOK log -r $REV $REPOS`
# Auteur du commit
AUTHOR=`$SVNLOOK author -r $REV $REPOS`
 
# On prend les dix premiers fichiers commites et on le met en forme.
FILE=""
NB=0
for FILE in `$SVNLOOK changed $REPOS -r $REV | cut -d' ' -f4`; do
        if [ $NB -eq 0 ]
        then
                FILES=$FILE
        else
                FILES=$FILES", "$FILE
        fi

        (( NB += 1 ))

        if [ $NB -gt 10 ]
        then
                FILES=$FILES", ..."
#                echo $FILES
                break
        fi

done

# On envoie tout.
echo "$NAME_DEPOT : $FILES (r$REV) by $AUTHOR => $MSG" > $TMPFILE
$SOCAT -v openssl:$HOST:$PORT,cert=$CRTFILE,key=$KEYFILE,cafile=$CAFILE,method=$METHOD open:$TMPFILE
rm $TMPFILE